package com.js.rtu.fragment.second;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Spinner;

import com.js.rtu.R;
import com.js.rtu.base.BaseFragment;
import com.js.rtu.config.CmdConfig;
import com.js.rtu.config.IniConfig;
import com.js.rtu.util.BluetoothUtils;
import com.js.rtu.util.CmdUtils;
import com.js.rtu.util.ToastUtil;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;


/**
 * 22_05设置终端工作参数
 * 根据供电方式
 * 切换工作模式
 * 2+Nbyte
 * 第 1 个字节： 开启 0xAA， 关闭 0x55
 * 第 2 个字节： 供电方式数量
 * 第 3 个字节： 第一种供电方式下的工作模式
 * 第 4 个字节： 第二种供电方式下的工作模式
 * Created by zwz on 2020/6/22.
 */
public class Cmd_22_08Fragment extends BaseFragment {



    @BindView(R.id.sp_model1)
    Spinner spModel1;
    @BindView(R.id.sp_model2)
    Spinner spModel2;
    @BindView(R.id.rb_enalbe)
    RadioGroup rbEnalbe;
    @BindView(R.id.edt_input1)
    EditText edtInput1;
    @BindView(R.id.edt_input2)
    EditText edtInput2;
   private String enable="55";//自动切换,默认开



    public static Cmd_22_08Fragment newInstance() {
        Cmd_22_08Fragment fragment = new Cmd_22_08Fragment();
        Bundle bundle = new Bundle();
        fragment.setArguments(bundle);
        return fragment;
    }


    @Override
    protected int getLayoutId() {
        return R.layout.fragment_tab_second_cmd_22_08;
    }

    @Override
    protected void initView() {
        List<String> list=new ArrayList<>();
        list.add("一直在线");
        list.add("低功耗");
//        ArrayAdapter<String> mAdapter = new ArrayAdapter<>(_mActivity, android.R.layout.simple_spinner_dropdown_item, IniConfig.workType_des);
        ArrayAdapter<String> mAdapter = new ArrayAdapter<>(_mActivity, android.R.layout.simple_spinner_dropdown_item, list);
        spModel1.setAdapter(mAdapter);
        spModel2.setAdapter(mAdapter);
      spModel1.setSelection(0);
      spModel2.setSelection(0);
        rbEnalbe.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
               switch (checkedId){
                   case R.id.rb_on:
                       enable = "AA";
                       break;
                   case R.id.rb_off:
                       enable = "55";
                       break;
               }
            }
        });
//        spModel1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
//            @Override
//            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//                if (position!=0){
//                    edtInput1.setVisibility(View.GONE);
//                }else {
//                    edtInput1.setVisibility(View.VISIBLE);
//                }
//            }
//
//            @Override
//            public void onNothingSelected(AdapterView<?> parent) {
//
//            }
//        });
//        spModel2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
//            @Override
//            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//                if (position!=0){
//                    edtInput2.setVisibility(View.GONE);
//                }else {
//                    edtInput2.setVisibility(View.VISIBLE);
//                }
//            }
//
//            @Override
//            public void onNothingSelected(AdapterView<?> parent) {
//
//            }
//        });

    }




    private void set() {
//        if (IniConfig.workType_data.size() != IniConfig.workType_des.size()) {
//            toastShow("ini配置文件有误,工作模式节点中代号与描述个数不一致");
//            return;
//        }

        String data1 = spModel1.getSelectedItemPosition()==0?"AA":"55";//一直在线-》AA，低功耗-》55
        String data2 = spModel2.getSelectedItemPosition()==0?"AA":"55";//一直在线-》AA，低功耗-》55
//        String time1=spModel1.getSelectedItemPosition()==0?getTime(edtInput1):"00 00";
//        String time2=spModel2.getSelectedItemPosition()==0?getTime(edtInput2):"00 00";
        String time1=getTime(edtInput1);
        String time2=getTime(edtInput2);



        String count = "02";
//        如开启自动切换工作模式， 2 种供电方式， 第一
//        种 10 秒定时自报模式， 第 2 种低功耗模式
//        0xAA 0x02 0x10 0x55
      StringBuilder stringBuilder=new StringBuilder();
        stringBuilder.append(CmdConfig.CMD_22_08).append(" ")
                .append(enable).append(" ")//自动切换
                .append(count).append(" ")//供电方式数量
                .append(data1).append(" ")//第一种供电方式下的工作模式
                .append(time1).append(" ")//第一种供电方式下的工作模式
                .append(data2).append(" ")//第一种供电方式下的工作模式
                .append(time2);//第二种供电方式下的工作模式

//        String msg = CmdConfig.CMD_22_08 + " " + enable + " " + count + " " + data1 + " " + data2;
        sendData(stringBuilder.toString());
    }
    /**
     * 获取供电时间
     * @return
     */
    public String getTime(EditText edtTime) {
        String str_power = edtTime.getText().toString();
        if (str_power.isEmpty()) {
            toastShow("间隔");
            return "";
        }
        String data= String.format("%04x", Integer.parseInt(str_power)).toUpperCase();
//        return BleUtils.numToHex16(Integer.parseInt(str_power));
//        return BleUtils.getFloat(Float.parseFloat(str_power));

        data =data.substring(2, 4) + " " + data.substring(0, 2);//低字节在前
        return data;
    }

    private void sendData(String data) {
        String cmd = CmdUtils.getCmd(CmdConfig.CMD_22, data);
        BluetoothUtils.send(cmd, new BluetoothUtils.onCallback() {
            @Override
            public void onReceive(String msg) {
                dismissLoadingDialog();
                String[] data = msg.split(" ");
                if (data.length < 18) {
                    ToastUtil.info(msg);
                    return;
                }
                if (data[12].equals(CmdConfig.CMD_22)
                        && data[13].equals(CmdConfig.CMD_22_08)) {
                    if (data[14].equals(CmdConfig.SUCCECC)) {
                        ToastUtil.success("设置成功");
                    } else {
                        ToastUtil.error("设置失败");
                    }

                }


            }

            @Override
            public void onFail(String err) {
                toastShow(err);
                dismissLoadingDialog();
            }
        });
    }



    @OnClick(R.id.btn_set)
    public void onViewClicked() {
        set();
    }
}
